<?php
namespace app\Api\Aky;

use PhalApi\Api;

/**
 * 视频列表心跳在线接口
 */
class VideoList extends Api
{
    
    public function getRules() {
        return array(
            'heartbeat' => array(
                'name' => array('name' => 'name', 'require' => true, 'desc' => '设备名称'),
            ),
        );
    }

    /**
     * 心跳在线接口
     * @desc 处理设备心跳，如果设备不存在则创建，存在则更新在线时间
     * @return int code 0表示成功，其他表示失败
     * @return string msg 提示信息
     */
    public function heartbeat() {
        // 支持JSON方式传数据
        $jsonInput = file_get_contents('php://input');
        $jsonParams = json_decode($jsonInput, true);
        
        // 如果是JSON数据，则使用JSON数据，否则使用GET/POST参数
        if (!empty($jsonParams) && is_array($jsonParams)) {
            $params = $jsonParams;
        } else {
            // 使用get方式获取所有输入参数，便于接口变动
            $params = \PhalApi\DI()->request->getAll();
        }
        
        $name = isset($params['name']) ? $params['name'] : '';
        
        // 验证必要参数
        if (empty($name)) {
            \PhalApi\DI()->response->setMsg('设备名称不能为空');
            \PhalApi\DI()->response->setRet(1);
            return;
        }
        
        // 检查设备是否已存在
        $existingRecord = \PhalApi\DI()->notorm->aky_videolist
            ->where('name', $name)
            ->fetch();
            
        $currentTime = date('Y-m-d H:i:s', time());
        
        if ($existingRecord) {
            // 如果存在，更新在线时间
            $data = array(
                'update_time' => $currentTime,
            );
            
            try {
                $result = \PhalApi\DI()->notorm->aky_videolist
                    ->where('name', $name)
                    ->update($data);
                
                if ($result) {
                    \PhalApi\DI()->response->setMsg('在线时间更新成功');
                    \PhalApi\DI()->response->setRet(0);
                } else {
                    \PhalApi\DI()->response->setMsg('在线时间更新失败');
                    \PhalApi\DI()->response->setRet(2);
                }
            } catch (\Exception $e) {
                \PhalApi\DI()->response->setMsg('数据库操作异常：' . $e->getMessage());
                \PhalApi\DI()->response->setRet(3);
            }
        } else {
            // 如果不存在，创建新记录
            $data = array(
                'name' => $name,
                'create_time' => $currentTime,
                'update_time' => $currentTime,
            );
            
            try {
                $result = \PhalApi\DI()->notorm->aky_videolist->insert($data);
                
                if ($result) {
                    \PhalApi\DI()->response->setMsg('设备创建成功');
                    \PhalApi\DI()->response->setRet(0);
                } else {
                    \PhalApi\DI()->response->setMsg('设备创建失败');
                    \PhalApi\DI()->response->setRet(2);
                }
            } catch (\Exception $e) {
                \PhalApi\DI()->response->setMsg('数据库操作异常：' . $e->getMessage());
                \PhalApi\DI()->response->setRet(3);
            }
        }
    }
}